package com.example.d4_homework.homework02;

import java.io.*;
import java.util.Scanner;

/**
 * 歌曲操作类
 */
public class SingOperator {

    private static final Scanner sc = new Scanner(System.in);
    // 定义一个路径存储歌曲文件
    private static final String FILE_PATH = "day21-properties-xml-log/src/sing.txt";

    public void start() {
        while (true) {
            System.out.println("=====欢迎进入歌曲管理系统=====");
            System.out.println("1.查询所有歌曲");
            System.out.println("2.根据歌曲名称复制");
            System.out.println("3.根据歌曲名称删除");
            System.out.println("4.退出");
            System.out.print("请输入您的选择：");
            String choice = sc.next();
            switch (choice) {
                case "1":
                    getAllSong();
                    break;
                case "2":
                    copySing();
                    break;
                case "3":
                    deleteSong();
                    break;
                case "4":
                    System.out.println("退出系统");
                    return;
                default:
                    System.out.println("您输入的命令不存在！");
            }
        }
    }

    /**
     * 根据歌曲名称删除
     */
    private void deleteSong() {
        System.out.print("请输入要删除的歌曲名称: ");
        String name = sc.next();
        File songFile = new File(FILE_PATH, name + ".txt");

        if (songFile.delete()) {
            System.out.println("歌曲 " + name + " 已经成功删除");
        } else {
            System.out.println("删除失败或歌曲不存在.");
        }
    }

    /**
     * 根据歌曲名称复制
     */
    private void copySing() {
        System.out.println("请输入要复制的歌曲名称");
        String name = sc.next();
        System.out.print("请输入歌曲的复制路径（包括目标文件名）: ");
        String path = sc.nextLine(); // 由于上面的next()不会消耗换行符,所以这里使用nextLine()

        File sourceFile = new File(FILE_PATH, name + ".txt");
        File tagretFile = new File(path);

        if (!sourceFile.exists()) {
            System.out.println("您要复制的歌曲不存在！");
            return;
        }

        try (
                InputStream is = new FileInputStream(sourceFile);
                OutputStream os = new FileOutputStream(tagretFile)
        ) {
            byte[] buffer = new byte[1024];
            int len;
            while ((len = is.read(buffer)) != -1) {
                os.write(buffer, 0, len);
            }
            System.out.println("歌曲 " + name + " 已经成功复制到 " + path);
        } catch (Exception e) {
            System.err.println("复制失败: " + e.getMessage());
        }
    }

    /**
     * 查询所有歌曲
     */
    private void getAllSong() {
        // 1.创建一个字符输入流读取文件的数据
        try (
                BufferedReader br = new BufferedReader(new FileReader(FILE_PATH));
        ) {
            String line;
            System.out.println("存在一下歌曲：");
            while ((line = br.readLine()) != null) {
                System.out.println(line);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
